<?php
class T_Page 
{
    private $each_disNums; //每页显示的条目数
    private $nums; //总条目数
    private $current_page; //当前被选中的页
    private $sub_pages; //每次显示的页数
  
 
    private $subPage_link; //每个分页的链接
    private $response;
    
    private $pageNums; //总页数
    private $page_array = array (); //用来构造分页的数组
    
    public static $each_disNums_s = 18;
	public static $nums_s =100;
	public static $current_page_s;
	public static $sub_pages_s = 10;
	public static $subpage_link_s ;
	public static $response_s;
	
	
    public static $startPage_s;
    
    public static $pageHTML;
  	public    function __construct() 
  	{
        $this->each_disNums = intval(self::$each_disNums_s);
        $this->nums = intval(self::$nums_s);
        if (!self::$current_page_s) {
            $this->current_page = 1;
        } else {
            $this->current_page = intval(self::$current_page_s);
        }
        $this->sub_pages = intval(self::$sub_pages_s);
        $this->pageNums = ceil(self::$nums_s / self::$each_disNums_s);
        $this->subPage_link = self::$subpage_link_s;
        $this->response = self::$response_s;
        self::$startPage_s = ($this->current_page-1) * self::$each_disNums_s;
    }
   public static  function getPageController() 
   {
   		
   		$page =  new T_Page();
   		
     	self::$pageHTML = $page->subPageCss2();
     	
    }

   private function  getUrl($num)
   {
  
   		$subPage_link = $this->subPage_link;
   		if($this->response == null && !is_array($subPage_link))
   		{
   				
   			return $subPage_link.$num;
   		}
   		else if($this->response != null && is_array($subPage_link))
   		{
   		
   			$subPage_link['param']['page'] = $num;
   			return $this->response->getUrl($subPage_link['module'],$subPage_link['action'],$subPage_link['method'], $subPage_link['param'], $subPage_link['query']);
   		}
   }
   private function initArray() 
   {
        for ($i = 0; $i < $this->sub_pages; $i++) {
            $this->page_array[$i] = $i;
        }
        return $this->page_array;
    }

   private  function construct_num_Page() 
   {
        if ($this->pageNums < $this->sub_pages) {
            $current_array = array ();
            for ($i = 0; $i < $this->pageNums; $i++) {
                $current_array[$i] = $i +1;
            }
        } else {
            $current_array = $this->initArray();
            if ($this->current_page <= 3) {
                for ($i = 0; $i < count($current_array); $i++) {
                    $current_array[$i] = $i +1;
                }
            }
            elseif ($this->current_page <= $this->pageNums && $this->current_page > $this->pageNums - $this->sub_pages + 1) {
                for ($i = 0; $i < count($current_array); $i++) {
                    $current_array[$i] = ($this->pageNums) - ($this->sub_pages) + 1 + $i;
                }
            } else {
                for ($i = 0; $i < count($current_array); $i++) {
                    $current_array[$i] = $this->current_page - 2 + $i;
                }
            }
        }
        return $current_array;
    }

    /*
    构造普通模式的分页
    共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页]
    *//*
   public function subPageCss1() {
        $subPageCss1Str = "";
        $subPageCss1Str .= "共" . $this->nums . "条记录，";
        $subPageCss1Str .= "每页显示" . $this->each_disNums . "条，";
        $subPageCss1Str .= "当前第" . $this->current_page . "/" . $this->pageNums . "页 ";
        if ($this->current_page > 1) {
            $firstPageUrl = $this->subPage_link . "1";
            $prewPageUrl = $this->subPage_link . ($this->current_page - 1);
            $subPageCss1Str .= "[<a href='$firstPageUrl'>首页</a>] ";
            $subPageCss1Str .= "[<a href='$prewPageUrl'>上一页</a>] ";
        } else {
            $subPageCss1Str .= "[首页] ";
            $subPageCss1Str .= "[上一页] ";
        }

        if ($this->current_page < $this->pageNums) {
            $lastPageUrl = $this->subPage_link . $this->pageNums;
            $nextPageUrl = $this->subPage_link . ($this->current_page + 1);
            $subPageCss1Str .= " [<a href='$nextPageUrl'>下一页</a>] ";
            $subPageCss1Str .= "[<a href='$lastPageUrl'>尾页</a>] ";
        } else {
            $subPageCss1Str .= "[下一页] ";
            $subPageCss1Str .= "[尾页] ";
        }

        return $subPageCss1Str;

    }
*/

    /*
    构造经典模式的分页
    当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
    */
   public function subPageCss2() 
   {
        $subPageCss2Str = "";
        //$subPageCss2Str .= "当前第" . $this->current_page . "/" . $this->pageNums . "页 ";

        if ($this->current_page > 1) {
            $firstPageUrl = $this->getUrl("1");
            $prewPageUrl = $this->getUrl($this->current_page - 1);
            $subPageCss2Str .= "[<a href='$firstPageUrl'>首页</a>] ";
            $subPageCss2Str .= "[<a href='$prewPageUrl'>上一页</a>] ";
        } else {
           // $subPageCss2Str .= "[首页] ";
           // $subPageCss2Str .= "[上一页] ";
        }

        $a = $this->construct_num_Page();
        for ($i = 0; $i < count($a); $i++) {
            $s = $a[$i];
            if ($s == $this->current_page) {
                if($this->pageNums > 1)
                $subPageCss2Str .= $s . "&nbsp;";
            } else {
                $url =$this->getUrl($s);
               $subPageCss2Str .= "<a href='$url'>[" . $s . "]</a>&nbsp;";
            }
        }

        if ($this->current_page < $this->pageNums) {
            $lastPageUrl = $this->getUrl($this->pageNums);
            $nextPageUrl = $this->getUrl($this->current_page + 1);
            $subPageCss2Str .= " [<a href='$nextPageUrl'>下一页</a>] ";
            $subPageCss2Str .= "[<a href='$lastPageUrl'>尾页</a>] ";
        } else {
        	if($this->pageNums > 1 && $this->current_page != $this->pageNums)
        	{
            	$subPageCss2Str .= "下一页&nbsp;";
            	$subPageCss2Str .= "尾页&nbsp;";
        	}
        }
        return $subPageCss2Str;
    }
}
//测试一下，看看两种不同效果
//$t = new Page(10, 200, $_GET['p'], 8, '/org/page.php?p=');
//echo $t->subPageCss2();
//echo "<br>";
//echo $t->subPageCss1();
?>